package command;

import moteur.Impl_Moteur;
import enregistrement.Enregistrable;
import enregistrement.Enregistreur;
import enregistrement.Impl_Memento;
import enregistrement.Memento;

/***********************************************************************
 * Module: Coller.java Author: 12008505 Purpose: Defines the Class Coller
 ***********************************************************************/

public class Coller implements Command, Enregistrable {
	public Impl_Moteur	moteur;
	private Memento		memento;
	public Enregistreur	enregistreur;
	
	public Coller(Impl_Moteur moteur, Enregistreur enregistreur) {
		this.moteur = moteur;
		this.enregistreur = enregistreur;
	}
	
	public void execute() {
		
		boolean etatE = enregistreur.getEtat();
		if (etatE == true) {
			enregistreur.ajouterCommand(creerMemento());
		}
		
		moteur.coller();
		System.out.println("le buffer :" + moteur.getBuffer().getZoneDeTravail());
		
		moteur.saveState();
	}
	
	public Memento creerMemento() {
		int position = moteur.getSelection().getDebut();
		return new Impl_Memento(moteur, position, this);
		
	}
	
	public void setMemento(Memento m) {
		moteur = m.getEtatMoteur();
		
	}
	
}
